package com.example.m2l_digicode;


import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Calendar;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;

import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;



public class Digicode extends Activity 
{
	
	//Initialisation des variables globales
	
	String digicode = null;
    ResultSet result;	//Permet de recuperer le résultat d'une requete SQL
    PreparedStatement statement; // Permet d'initialiser la connexion au serveur
    Handler handler = null; 
    String requete = null;
   
    ProgressDialog loadingdialog;
    
    String salle="1";
    String mois="1";
    
    AlertDialog affiche_code;
    
    java.sql.Connection conn = null;

	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_digicode);
		// Show the Up button in the action bar.
		//getActionBar().setDisplayHomeAsUpEnabled(true);
		
	    
		//********************** OBTENTION DU MOIS EN COURS******************
		 Calendar calendrier = Calendar.getInstance();		
		 int mois_actuel = calendrier.get(Calendar.MONTH);

		
		
		 //********************** LISTES DEROULANTES *************************
		
		//*********************SALLES********************
		Spinner spin_salles = (Spinner) findViewById(R.id.liste_salles);
		
		
		ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
		this, R.array.tab_salles, android.R.layout.simple_spinner_item);
		spin_salles.setAdapter(adapter);
		
	    //Ajout Listener sur sélection dans la liste
	    spin_salles.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
	        @Override
	        public void onItemSelected(AdapterView<?> parent, View view,
	                int pos, long id) {
	        	//Récupération de la valeur de la salle choisie dans la liste
	        	 salle=String.valueOf(pos+1);
	        	 
	        	 Log.i("num_salle", salle);

	        }
	        @Override
	        public void onNothingSelected(AdapterView<?> arg0) {

	        }
	    });
	    
	    
	    //*********************MOIS**************************
	    Spinner spin_mois = (Spinner) findViewById(R.id.liste_mois);
	    
	   
	    
		ArrayAdapter<CharSequence> adapter_mois = ArrayAdapter.createFromResource(
		this, R.array.tab_mois, android.R.layout.simple_spinner_item);
		spin_mois.setAdapter(adapter_mois);
		 
	    //Ajout Listener sur sélection dans la liste
	    spin_mois.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){
	        @Override
	        public void onItemSelected(AdapterView<?> parent, View view,
	                int pos, long id) {
	        	
	        	//Récupération de la valeur du mois choisi dans la liste
	        	 mois=String.valueOf(pos+1);
	        	 
	        	 Log.i("num_mois", mois);
	        }
	        @Override
	        public void onNothingSelected(AdapterView<?> arg0) {


	        }
	    });
	    
    	//Initialisation de la liste d�roulante sur le mois en cours
	    spin_mois.setSelection(mois_actuel);
				
		
		//Ajout de la fonction get_code sur le onclick du bouton
        final Button button = (Button) findViewById(R.id.button_digi);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	
            	get_code();
            	
            }  
        });
	}
	
	
	
	public void get_code()
	{
	    //Initialisation du thread de connexion
		new Thread(new Runnable() {
	        @Override
	        public void run() {
	        	//D�finition de la requete
	        	requete = "SELECT CODE FROM DIGICODE WHERE NUM_SALLE="+salle+" AND NUM_MOIS="+mois;
	        	
	        	//Affichage de la boite de dialogue "Chragement"
	            runOnUiThread(new Runnable() {	                   
					public void run() {
						loadingdialog = ProgressDialog.show(Digicode.this,
	                            "","Chargement en cours...",true);
	
	               }
	           });
	        	
			//Chargement du driver JDBC
		       try
		       {
		           
		           try {
		               Class.forName("com.mysql.jdbc.Driver").newInstance();
		        
		           } catch (InstantiationException e) {
		               // TODO Auto-generated catch block
		               e.printStackTrace();
		               Log.e("Instanciation Driver", e.getMessage()); //Erreur du driver
		           } catch (IllegalAccessException e) {
		               // TODO Auto-generated catch block
		               e.printStackTrace();
		               Log.e("Access Exception", e.getMessage()); //Erreur dans l'acces driver
		           } catch (ClassNotFoundException e) {
		               // TODO Auto-generated catch block
		               e.printStackTrace();
		               Log.e("Class", e.getMessage()); //Erreur dans le chargement de la classe du driver
		           }
		                    
		         //D�finition des parametres du serveur MySQL   
		           String url = "jdbc:mysql://192.168.1.26/digicode?autoReconnect=true";
		           //String url = "jdbc:mysql://ppe-fredi.suroot.com/digicode?autoReconnect=true";
		           String user = "util";
		           String passwd = "util123";
		            
		         //Connexion � la base de donn�es
		           conn = (java.sql.Connection) DriverManager.getConnection(url, user, passwd);
		               Log.i("Connection", "Etablie");
		               
		         //Execution de la requete
		            statement=(PreparedStatement) conn.prepareStatement(requete);
		            result=(ResultSet) statement.executeQuery();
		          
		          //R�cup�ration du r�sulat
		                while(result.next())
		                {
		                	digicode=result.getString(1);
		                }
		                
		                Log.i("OK", digicode);
		                
		           //Affichage du r�sultat dans un "pop-up"
		                runOnUiThread(new Runnable() {
		                    @SuppressWarnings("deprecation")
							public void run() {
		                        loadingdialog.dismiss();
		                    	
		                    	affiche_code = new AlertDialog.Builder(Digicode.this).create();
		                        affiche_code.setTitle("Digicode");
		                        affiche_code.setMessage(digicode);
		                        affiche_code.setButton("OK", new DialogInterface.OnClickListener() {
		                            public void onClick(DialogInterface dialog, int which) {
		                            	affiche_code.dismiss();
		                          } });
		                        affiche_code.show();
		                   }
		               });
	
		       }
		       
		       //G�n�ration d'erreur cot� serveur
		       catch(SQLException e)
		       {
		           e.printStackTrace();
		           //Affichage de l'erreur dans le fichier log                
		           Log.e("MySQL", e.getMessage());
		         
		       }
			  
	        }
	          
	    }).start();
	    
	    
	}

}
